/*

std::less<T>: 用于比较两个元素是否满足小于关系。
    std::less<int> lessThan;
    bool result = lessThan(3, 5);  // 返回 true

std::greater<T>: 用于比较两个元素是否满足大于关系。
    std::greater<int> greaterThan;
    bool result = greaterThan(5, 3);  // 返回 true

std::equal_to<T>: 用于比较两个元素是否相等。
    std::equal_to<int> equalTo;
    bool result = equalTo(3, 3);  // 返回 true

std::not_equal_to<T>: 用于比较两个元素是否不相等。
    std::not_equal_to<int> notEqualTo;
    bool result = notEqualTo(3, 5);  // 返回 true

std::logical_and<T>: 用于逻辑与操作。
    std::logical_and<bool> logicalAnd;
    bool result = logicalAnd(true, true);  // 返回 true

std::logical_or<T>: 用于逻辑或操作。
    std::logical_or<bool> logicalOr;
    bool result = logicalOr(true, false);  // 返回 true

std::logical_not<T>: 用于逻辑非操作。
    std::logical_not<bool> logicalNot;
    bool result = logicalNot(true);  // 返回 false

std::plus<T>: 用于加法操作。
    std::plus<int> addition;
    int result = addition(3, 5);  // 返回 8

std::minus<T>: 用于减法操作。
    std::minus<int> subtraction;
    int result = subtraction(5, 3);  // 返回 2
 */

#include <iostream>
#include <functional>

int main()
{
//    std::greater<T>: 用于比较两个元素是否满足大于关系。
    std::cout << "std::greater<T>:" << std::endl;
    std::greater<int> a{};
    std::cout << a(1, 3) << std::endl;

//    std::less<T>: 用于比较两个元素是否满足小于关系。
    std::cout << "std::less<T>:" << std::endl;
    std::less<int> b{};
    std::cout << b(1, 3) << std::endl;
//    std::equal_to<T>: 用于比较两个元素是否相等。
    std::cout << "std::equal_to<T>:" << std::endl;
    std::equal_to<int> c{};
    std::cout << c(1, 1) << std::endl;
    std::cout << c(2, 1) << std::endl;
//    std::not_equal_to<T>: 用于比较两个元素是否不相等。
    std::cout << "std::not_equal_to<T>:" << std::endl;
    std::not_equal_to<int> d{};
    std::cout << d(1, 1) << std::endl;
    std::cout << d(1, 0) << std::endl;
//    std::logical_and<T>: 用于逻辑与操作。
    std::cout << "std::logical_and<T>:" << std::endl;
    std::logical_and<bool> e{};
    std::cout << e(true, false) << std::endl;
    std::cout << e(false, false) << std::endl;
    std::cout << e(true, true) << std::endl;

//    std::logical_or<T>: 用于逻辑或操作。
    std::cout << "std::logical_or<T>:" << std::endl;
    std::logical_or<bool> f{};
    std::cout << f(true, false) << std::endl;
    std::cout << f(false, false) << std::endl;
    std::cout << f(true, true) << std::endl;
//    std::logical_not<T>: 用于逻辑非操作。
    std::cout << "std::logical_not<T>:" << std::endl;
    std::logical_not<bool> g{};
    std::cout << g(true) << std::endl;
    std::cout << g(false) << std::endl;
//    std::plus<T>: 用于加法操作。
    std::cout << "std::plus<T>:" << std::endl;
    std::plus<int> h{};
    std::cout << h(1, 3) << std::endl;
//    std::minus<T>: 用于减法操作。
    std::cout << "std::minus<T>:" << std::endl;
    std::minus<int> i{};
    std::cout << i(10, 8) << std::endl;

//    std::negate<T>: 用于取反操作
    std::cout << "std::negate<T>:" << std::endl;
    std::negate<int> j{};
    std::cout << j(100) << std::endl;

    return EXIT_SUCCESS;
}